V8ã®ãã£ãŒãããã¯ãã¯ã¿ãŒæé©åã®æ žå¿ãæ¢ããŸããããããã£ã¢ã¯ã»ã¹ãã¿ãŒã³ã®åŠç¿ã«ããJavaScriptã®å®è¡é床ãåçã«åäžãããä»çµã¿ãé ãã¯ã©ã¹ãã€ã³ã©ã€ã³ãã£ãã·ã¥ãå®è·µçãªæé©åæŠç¥ã解説ããŸãã
JavaScript V8ã®ãã£ãŒãããã¯ãã¯ã¿ãŒæé©åïŒããããã£ã¢ã¯ã»ã¹ãã¿ãŒã³åŠç¿ã®è©³çŽ°è§£èª¬
ChromeãNode.jsãåããV8 JavaScriptãšã³ãžã³ã¯ããã®ããã©ãŒãã³ã¹ã§ç¥ãããŠããŸãããã®ããã©ãŒãã³ã¹ã®éèŠãªèŠçŽ ã¯ããã£ãŒãããã¯ãã¯ã¿ãŒã«å€§ããäŸåããæŽç·Žãããæé©åãã€ãã©ã€ã³ã§ãããããã®ãã¯ã¿ãŒã¯ãV8ãJavaScriptã³ãŒãã®å®è¡æã®æ¯ãèããåŠç¿ããé©å¿ããèœåã®å¿èéšã§ãããç¹ã«ããããã£ã¢ã¯ã»ã¹ã«ãããŠå€§å¹ ãªé床åäžãå¯èœã«ããŸãããã®èšäºã§ã¯ãV8ãã€ã³ã©ã€ã³ãã£ãã·ã¥ãšé ãã¯ã©ã¹ã掻çšããŠãã©ã®ããã«ãã£ãŒãããã¯ãã¯ã¿ãŒã䜿çšããŠããããã£ã¢ã¯ã»ã¹ãã¿ãŒã³ãæé©åãããã詳ãã解説ããŸãã
ã³ã¢ã³ã³ã»ããã®çè§£
ãã£ãŒãããã¯ãã¯ã¿ãŒãšã¯ïŒ
ãã£ãŒãããã¯ãã¯ã¿ãŒã¯ãJavaScriptã³ãŒãã«ãã£ãŠå®è¡ãããæäœã«é¢ããã©ã³ã¿ã€ã æ å ±ãåéããããã«V8ã䜿çšããããŒã¿æ§é ã§ãããã®æ å ±ã«ã¯ãæäœãããŠãããªããžã§ã¯ãã®åãã¢ã¯ã»ã¹ãããŠããããããã£ãããŸããŸãªæäœã®é »åºŠãªã©ãå«ãŸããŸãããããã¯ãV8ãã³ãŒãã®æ¯ãèãããªã¢ã«ã¿ã€ã ã§èгå¯ããåŠç¿ããæ¹æ³ã ãšèããŠãã ããã
å ·äœçã«ã¯ããã£ãŒãããã¯ãã¯ã¿ãŒã¯ç¹å®ã®ãã€ãã³ãŒãåœä»€ã«é¢é£ä»ããããŠããŸããååœä»€ã¯ããã®ãã£ãŒãããã¯ãã¯ã¿ãŒå ã«è€æ°ã®ã¹ããããæã€ããšãã§ããŸããåã¹ãããã«ã¯ããã®ç¹å®ã®åœä»€ã®å®è¡ã«é¢é£ããæ å ±ãæ ŒçŽãããŸãã
é ãã¯ã©ã¹ïŒå¹ççãªããããã£ã¢ã¯ã»ã¹ã®åºç€
JavaScriptã¯åçåä»ãèšèªã§ããã倿°ã®åãå®è¡æã«å€æŽãããå¯èœæ§ãããããšãæå³ããŸããããã¯ããšã³ãžã³ãã³ã³ãã€ã«æã«ãªããžã§ã¯ãã®æ§é ãç¥ããªããããæé©åã«ãšã£ãŠèª²é¡ãšãªããŸããããã«å¯ŸåŠãããããV8ã¯é ãã¯ã©ã¹ïŒããããã·ã§ã€ããšãåŒã°ããïŒã䜿çšããŸããé ãã¯ã©ã¹ã¯ããªããžã§ã¯ãã®æ§é ïŒããããã£ãšãã®ãªãã»ããïŒãèšè¿°ããŸããæ°ãããªããžã§ã¯ããäœæããããã³ã«ãV8ã¯ããã«é ãã¯ã©ã¹ãå²ãåœãŠãŸãã2ã€ã®ãªããžã§ã¯ããåãããããã£åãåãé åºã§æã£ãŠããå Žåããããã¯åãé ãã¯ã©ã¹ãå ±æããŸãã
以äžã®JavaScriptãªããžã§ã¯ããèããŠã¿ãŸãããïŒ
const obj1 = { x: 10, y: 20 };
const obj2 = { x: 5, y: 15 };
obj1ãšobj2ã¯ãåãããããã£ãåãé åºã§æã£ãŠãããããããããåãé ãã¯ã©ã¹ãå
±æããŸããããããobj1ã®äœæåŸã«ããããã£ã远å ãããšã次ã®ããã«ãªããŸãïŒ
obj1.z = 30;
obj1ã¯æ°ããé ãã¯ã©ã¹ã«ç§»è¡ããŸãããã®ç§»è¡ã¯ãV8ããªããžã§ã¯ãã®æ§é ã«é¢ããçè§£ãæŽæ°ããå¿
èŠããããããéåžžã«éèŠã§ãã
ã€ã³ã©ã€ã³ãã£ãã·ã¥ïŒICïŒïŒããããã£æ€çŽ¢ã®é«éå
ã€ã³ã©ã€ã³ãã£ãã·ã¥ïŒICïŒã¯ãé ãã¯ã©ã¹ã掻çšããŠããããã£ã¢ã¯ã»ã¹ãé«éåããéèŠãªæé©åæè¡ã§ããV8ãããããã£ã¢ã¯ã»ã¹ã«ééãããšããäœéãªæ±çšç®çã®æ€çŽ¢ãå®è¡ããå¿ èŠã¯ãããŸããã代ããã«ããªããžã§ã¯ãã«é¢é£ä»ããããé ãã¯ã©ã¹ã䜿çšããŠãã¡ã¢ãªå ã®æ¢ç¥ã®ãªãã»ããã§ããããã£ã«çŽæ¥ã¢ã¯ã»ã¹ã§ããŸãã
ããããã£ãåããŠã¢ã¯ã»ã¹ããããšããICã¯æªåæåã®ç¶æ ã§ããV8ã¯ããããã£æ€çŽ¢ãå®è¡ããé ãã¯ã©ã¹ãšãªãã»ãããICã«æ ŒçŽããŸãããã®åŸãåãé ãã¯ã©ã¹ãæã€ãªããžã§ã¯ãã®åãããããã£ãžã®ã¢ã¯ã»ã¹ã¯ããã£ãã·ã¥ããããªãã»ããã䜿çšã§ãããããã³ã¹ãã®ãããæ€çŽ¢ããã»ã¹ãåé¿ã§ããŸããããã¯éåžžã«å€§ããªããã©ãŒãã³ã¹ã®åäžã§ãã
以äžã«ç°¡åãªå³è§£ã瀺ããŸãïŒ
- æåã®ã¢ã¯ã»ã¹ïŒ V8ã
obj.xã«ééããŸããICã¯æªåæåã§ãã - æ€çŽ¢ïŒ V8ã¯
objã®é ãã¯ã©ã¹å ã§xã®ãªãã»ãããèŠã€ããŸãã - ãã£ãã·ã¥ïŒ V8ã¯é ãã¯ã©ã¹ãšãªãã»ãããICã«æ ŒçŽããŸãã
- åŸç¶ã®ã¢ã¯ã»ã¹ïŒ
objïŒãŸãã¯å¥ã®ãªããžã§ã¯ãïŒãåãé ãã¯ã©ã¹ãæã€å ŽåãV8ã¯ãã£ãã·ã¥ããããªãã»ããã䜿çšããŠxã«çŽæ¥ã¢ã¯ã»ã¹ããŸãã
ãã£ãŒãããã¯ãã¯ã¿ãŒãšé ãã¯ã©ã¹ã®é£æº
ãã£ãŒãããã¯ãã¯ã¿ãŒã¯ãé ãã¯ã©ã¹ãšã€ã³ã©ã€ã³ãã£ãã·ã¥ã®ç®¡çã«ãããŠéèŠãªåœ¹å²ãæãããŸããããããã£ã¢ã¯ã»ã¹äžã«èŠ³æž¬ãããé ãã¯ã©ã¹ãèšé²ããŸãããã®æ å ±ã¯ã以äžã®ç®çã§äœ¿çšãããŸãïŒ
- é ãã¯ã©ã¹ã®é·ç§»ãããªã¬ãŒããïŒ V8ããªããžã§ã¯ãã®æ§é ã®å€åïŒäŸïŒæ°ããããããã£ã®è¿œå ïŒã芳枬ãããšããã£ãŒãããã¯ãã¯ã¿ãŒãæ°ããé ãã¯ã©ã¹ãžã®é·ç§»ãéå§ããã®ã«åœ¹ç«ã¡ãŸãã
- ICã®æé©åïŒ ãã£ãŒãããã¯ãã¯ã¿ãŒã¯ãç¹å®ã®ããããã£ã¢ã¯ã»ã¹ã«å¯ŸããŠäžè¬çãªé ãã¯ã©ã¹ã«ã€ããŠICã·ã¹ãã ã«éç¥ããŸããããã«ãããV8ã¯æãäžè¬çãªã±ãŒã¹ã«å¯ŸããŠICãæé©åã§ããŸãã
- ã³ãŒãã®éæé©åïŒ èŠ³æž¬ãããé ãã¯ã©ã¹ãICãæåŸ ãããã®ãšå€§å¹ ã«ç°ãªãå ŽåãV8ã¯ã³ãŒããéæé©åããããäœéã§æ±çšçãªããããã£æ€çŽ¢ã¡ã«ããºã ã«æ»ãããšããããŸããããã¯ãICããã¯ã广çã§ãªããããã害ãåãŒããŠããããã§ãã
䜿çšäŸïŒããããã£ã®åçãªè¿œå
åã®äŸãå蚪ãããã£ãŒãããã¯ãã¯ã¿ãŒãã©ã®ããã«é¢äžããããèŠãŠã¿ãŸãããïŒ
function Point(x, y) {
this.x = x;
this.y = y;
}
const p1 = new Point(10, 20);
const p2 = new Point(5, 15);
// Access properties
console.log(p1.x + p1.y);
console.log(p2.x + p2.y);
// Now, add a property to p1
p1.z = 30;
// Access properties again
console.log(p1.x + p1.y + p1.z);
console.log(p2.x + p2.y);
å éšã§ã¯æ¬¡ã®ãããªããšãèµ·ãã£ãŠããŸãïŒ
- åæã®é ãã¯ã©ã¹ïŒ
p1ãšp2ãäœæããããšãããããã¯åãåæã®é ãã¯ã©ã¹ïŒxãšyãå«ãïŒãå ±æããŸãã - ããããã£ã¢ã¯ã»ã¹ïŒååïŒïŒ
p1.xãšp1.yãåããŠã¢ã¯ã»ã¹ããããšãã察å¿ãããã€ãã³ãŒãåœä»€ã®ãã£ãŒãããã¯ãã¯ã¿ãŒã¯ç©ºã§ããV8ã¯ããããã£æ€çŽ¢ãå®è¡ããICã«é ãã¯ã©ã¹ãšãªãã»ãããæ ŒçŽããŸãã - ããããã£ã¢ã¯ã»ã¹ïŒåŸç¶ïŒïŒ
p2.xãšp2.yã2åç®ã«ã¢ã¯ã»ã¹ããããšããICããããããããããã£ã¢ã¯ã»ã¹ã¯ã¯ããã«é«éã«ãªããŸãã - ããããã£
zã®è¿œå ïŒp1.zã远å ãããšãp1ã¯æ°ããé ãã¯ã©ã¹ã«é·ç§»ããŸããããããã£å²ãåœãŠæäœã«é¢é£ãããã£ãŒãããã¯ãã¯ã¿ãŒããã®å€æŽãèšé²ããŸãã - éæé©åïŒå¯èœæ§ïŒïŒ
p1.zã远å ããåŸã«p1.xãšp1.yãå床ã¢ã¯ã»ã¹ããããšãïŒV8ã®ãã¥ãŒãªã¹ãã£ãã¯ã«å¿ããŠïŒICãç¡å¹ã«ãªãå¯èœæ§ããããŸããããã¯ãp1ã®é ãã¯ã©ã¹ãICãæåŸ ãããã®ãšç°ãªãããã§ããããåçŽãªã±ãŒã¹ã§ã¯ãV8ã¯å€ãé ãã¯ã©ã¹ãšæ°ããé ãã¯ã©ã¹ããªã³ã¯ããé·ç§»ããªãŒãäœæããããçšåºŠã®æé©åãç¶æã§ããå ŽåããããŸããããè€éãªã·ããªãªã§ã¯ãéæé©åãçºçããå¯èœæ§ããããŸãã - æé©åïŒæçµçã«ïŒïŒ æéãçµã€ã«ã€ããŠã
p1ãæ°ããé ãã¯ã©ã¹ã§é »ç¹ã«ã¢ã¯ã»ã¹ãããå ŽåãV8ã¯æ°ããã¢ã¯ã»ã¹ãã¿ãŒã³ãåŠç¿ããããã«å¿ããŠæé©åããæŽæ°ãããé ãã¯ã©ã¹ã«ç¹åããæ°ããICãäœæããå¯èœæ§ããããŸãã
å®è·µçãªæé©åæŠç¥
V8ãããããã£ã¢ã¯ã»ã¹ãã¿ãŒã³ãã©ã®ããã«æé©åããããçè§£ããããšã¯ãããããã©ãŒãã³ã¹ã®é«ãJavaScriptã³ãŒããæžãããšãå¯èœã«ããŸãã以äžã«ããã€ãã®å®è·µçãªæŠç¥ã瀺ããŸãïŒ
1. ãã¹ãŠã®ãªããžã§ã¯ãããããã£ãã³ã³ã¹ãã©ã¯ã¿ã§åæåãã
åžžã«ãã¹ãŠã®ãªããžã§ã¯ãããããã£ãã³ã³ã¹ãã©ã¯ã¿ãŸãã¯ãªããžã§ã¯ããªãã©ã«ã§åæåããåããåãã®ãã¹ãŠã®ãªããžã§ã¯ããåãé ãã¯ã©ã¹ãæã€ããã«ããŸããããã¯ç¹ã«ããã©ãŒãã³ã¹ãéèŠãªã³ãŒãã§éèŠã§ãã
// æªãäŸïŒã³ã³ã¹ãã©ã¯ã¿å€ã§ããããã£ã远å
function BadPoint(x, y) {
this.x = x;
this.y = y;
}
const badPoint = new BadPoint(1, 2);
badPoint.z = 3; // ããã¯é¿ããïŒ
// è¯ãäŸïŒãã¹ãŠã®ããããã£ãã³ã³ã¹ãã©ã¯ã¿ã§åæå
function GoodPoint(x, y, z) {
this.x = x;
this.y = y;
this.z = z !== undefined ? z : 0; // ããã©ã«ãå€
}
const goodPoint = new GoodPoint(1, 2, 3);
GoodPointã³ã³ã¹ãã©ã¯ã¿ã¯ãzã®å€ãæäŸããããã©ããã«é¢ãããããã¹ãŠã®GoodPointãªããžã§ã¯ããåãããããã£ãæã€ããšãä¿èšŒããŸããzãåžžã«äœ¿çšãããªãå Žåã§ããããã©ã«ãå€ã§äºåã«å²ãåœãŠãããšã¯ãåŸã§è¿œå ãããããããã©ãŒãã³ã¹ãé«ãããšãå€ãã§ãã
2. åãé åºã§ããããã£ã远å ãã
ããããã£ããªããžã§ã¯ãã«è¿œå ãããé åºã¯ããã®é ãã¯ã©ã¹ã«åœ±é¿ããŸããé ãã¯ã©ã¹ã®å ±æãæå€§åããããã«ãåããåãã®ãã¹ãŠã®ãªããžã§ã¯ãã§åãé åºã§ããããã£ã远å ããŸãã
// äžè²«æ§ã®ãªãããããã£é åºïŒæªãäŸïŒ
const objA = { a: 1, b: 2 };
const objB = { b: 2, a: 1 }; // é åºãç°ãªã
// äžè²«æ§ã®ããããããã£é åºïŒè¯ãäŸïŒ
const objC = { a: 1, b: 2 };
const objD = { a: 1, b: 2 }; // åãé åº
objAãšobjBã¯åãããããã£ãæã£ãŠããŸãããããããã£ã®é åºãç°ãªããããããããç°ãªãé ãã¯ã©ã¹ãæã¡ãããããã£ã¢ã¯ã»ã¹ãéå¹çã«ãªããŸãã
3. ããããã£ã®åçãªåé€ãé¿ãã
ãªããžã§ã¯ãããããããã£ãåé€ãããšããã®é ãã¯ã©ã¹ãç¡å¹ã«ãªããV8ã¯ããäœéãªããããã£æ€çŽ¢ã¡ã«ããºã ã«æ»ãããšãäœåãªããããå¯èœæ§ããããŸãã絶察ã«å¿ èŠãªå Žåãé€ããããããã£ã®åé€ã¯é¿ããŠãã ããã
// ããããã£ã®åé€ãé¿ããïŒæªãäŸïŒ
const obj = { a: 1, b: 2, c: 3 };
delete obj.b; // é¿ããïŒ
// 代ããã«nullãŸãã¯undefinedã䜿çšããïŒè¯ãäŸïŒ
const obj2 = { a: 1, b: 2, c: 3 };
obj2.b = null; // ãŸã㯠undefined
ããããã£ãnullãŸãã¯undefinedã«èšå®ããããšã¯ããªããžã§ã¯ãã®é ãã¯ã©ã¹ãä¿æãããããäžè¬çã«åé€ãããããããã©ãŒãã³ã¹ãé«ãã§ãã
4. æ°å€ããŒã¿ã«ã¯åä»ãé åã䜿çšãã
倧éã®æ°å€ããŒã¿ãæ±ãå Žåã¯ãåä»ãé
åã®äœ¿çšãæ€èšããŠãã ãããåä»ãé
åã¯ãç¹å®ã®ããŒã¿åïŒäŸïŒInt32ArrayãFloat64ArrayïŒã®é
åããéåžžã®JavaScripté
åãããå¹ççãªæ¹æ³ã§è¡šçŸããææ®µãæäŸããŸããV8ã¯ãåä»ãé
åã«å¯Ÿããæäœããã广çã«æé©åã§ããããšããããããŸãã
// Regular JavaScript array
const arr = [1, 2, 3, 4, 5];
// Typed Array (Int32Array)
const typedArr = new Int32Array([1, 2, 3, 4, 5]);
// Perform operations (e.g., sum)
let sum = 0;
for (let i = 0; i < arr.length; i++) {
sum += arr[i];
}
let typedSum = 0;
for (let i = 0; i < typedArr.length; i++) {
typedSum += typedArr[i];
}
åä»ãé åã¯ãæ°å€èšç®ãç»ååŠçããã®ä»ã®ããŒã¿éçŽçãªã¿ã¹ã¯ãå®è¡ããå Žåã«ç¹ã«æçã§ãã
5. ã³ãŒãããããã¡ã€ã«ãã
ããã©ãŒãã³ã¹ã®ããã«ããã¯ãç¹å®ããæã广çãªæ¹æ³ã¯ãChrome DevToolsãªã©ã®ããŒã«ã䜿çšããŠã³ãŒãããããã¡ã€ã«ããããšã§ããDevToolsã¯ãã³ãŒããæãæéãè²»ãããŠããå Žæã«é¢ããæŽå¯ãæäŸãããã®èšäºã§èª¬æããæé©åæè¡ãé©çšã§ããé åãç¹å®ã§ããŸãã
- Chrome DevToolsãéãïŒ ãŠã§ãããŒãžãå³ã¯ãªãã¯ããŠãInspectããéžæããŸããæ¬¡ã«ãPerformanceãã¿ãã«ç§»åããŸãã
- èšé²ïŒ èšé²ãã¿ã³ãã¯ãªãã¯ãããããã¡ã€ã«ãããã¢ã¯ã·ã§ã³ãå®è¡ããŸãã
- åæïŒ èšé²ã忢ããçµæãåæããŸããå®è¡ã«æéãããã£ãŠãã颿°ããé »ç¹ãªã¬ããŒãžã³ã¬ã¯ã·ã§ã³ãåŒãèµ·ãããŠãã颿°ãæ¢ããŸãã
é«åºŠãªèæ ®äºé
ããªã¢ãŒãã£ãã¯ã€ã³ã©ã€ã³ãã£ãã·ã¥
æã ãããããã£ãç°ãªãé ãã¯ã©ã¹ãæã€ãªããžã§ã¯ãã§ã¢ã¯ã»ã¹ãããããšããããŸãããã®ãããªå ŽåãV8ã¯ããªã¢ãŒãã£ãã¯ã€ã³ã©ã€ã³ãã£ãã·ã¥ïŒPICïŒã䜿çšããŸããPICã¯è€æ°ã®é ãã¯ã©ã¹ã®æ å ±ããã£ãã·ã¥ã§ããéå®çãªçšåºŠã®ããªã¢ãŒãã£ãºã ãåŠçã§ããŸããããããç°ãªãé ãã¯ã©ã¹ã®æ°ãå€ããããšãPICã¯å¹æãèããV8ã¯ã¡ã¬ã¢ãŒãã£ãã¯æ€çŽ¢ïŒæãé ããã¹ïŒã«é ŒãããšããããŸãã
é·ç§»ããªãŒ
åè¿°ã®ããã«ããªããžã§ã¯ãã«ããããã£ã远å ããããšãV8ã¯å€ãé ãã¯ã©ã¹ãšæ°ããé ãã¯ã©ã¹ãæ¥ç¶ããé·ç§»ããªãŒãäœæããããšããããŸããããã«ããããªããžã§ã¯ããç°ãªãé ãã¯ã©ã¹ã«é·ç§»ããŠããV8ã¯ããçšåºŠã®æé©åãç¶æã§ããŸããããããé床ãªé·ç§»ã¯äŸç¶ãšããŠããã©ãŒãã³ã¹ã®äœäžã«ã€ãªããå¯èœæ§ããããŸãã
éæé©å
V8ããã®æé©åããã¯ãæå¹ã§ãªãïŒäŸïŒäºæããªãé ãã¯ã©ã¹ã®å€æŽã®ããïŒãšæ€åºããå Žåãã³ãŒããéæé©åããããšããããŸããéæé©åã«ã¯ãããäœéã§æ±çšçãªå®è¡ãã¹ã«æ»ãããšãå«ãŸããŸããéæé©åã¯ã³ã¹ãããããå¯èœæ§ãããããããããåŒãèµ·ããç¶æ³ãé¿ããããšãéèŠã§ãã
å®äžçã®äŸãšåœéåã«é¢ããèæ ®äºé
ããã§èª¬æããæé©åæè¡ã¯ãç¹å®ã®ã¢ããªã±ãŒã·ã§ã³ããŠãŒã¶ãŒã®å°ççãªå Žæã«é¢ä¿ãªããæ®éçã«é©çšå¯èœã§ããããããç¹å®ã®å°åãæ¥çã§ã¯ãç¹å®ã®ã³ãŒãã£ã³ã°ãã¿ãŒã³ãããäžè¬çã§ããå¯èœæ§ããããŸããäŸãã°ïŒ
- ããŒã¿éçŽåã¢ããªã±ãŒã·ã§ã³ïŒäŸïŒéèã¢ããªã³ã°ãç§åŠã·ãã¥ã¬ãŒã·ã§ã³ïŒïŒ ãããã®ã¢ããªã±ãŒã·ã§ã³ã¯ãåä»ãé åã®äœ¿çšãæ³šææ·±ãã¡ã¢ãªç®¡çãããã°ãã°æ©æµãåããŸããã€ã³ããç±³åœããšãŒãããã®ããŒã ããã®ãããªã¢ããªã±ãŒã·ã§ã³ã§æžããã³ãŒãã¯ãèšå€§ãªéã®ããŒã¿ãåŠçããããã«æé©åãããªããã°ãªããŸããã
- åçã³ã³ãã³ããæã€ãŠã§ãã¢ããªã±ãŒã·ã§ã³ïŒäŸïŒeã³ããŒã¹ãµã€ãããœãŒã·ã£ã«ã¡ãã£ã¢ãã©ãããã©ãŒã ïŒïŒ ãããã®ã¢ããªã±ãŒã·ã§ã³ã¯ãé »ç¹ãªãªããžã§ã¯ãã®äœæãšæäœã䌎ããŸããããããã£ã¢ã¯ã»ã¹ãã¿ãŒã³ãæé©åããããšã§ããããã®ã¢ããªã±ãŒã·ã§ã³ã®å¿çæ§ãå€§å¹ ã«åäžãããäžçäžã®ãŠãŒã¶ãŒã«å©çãããããããšãã§ããŸããäŸãã°ãæ¥æ¬ã®eã³ããŒã¹ãµã€ãã§é¢è±çãæžããããã«èªã¿èŸŒã¿æéãæé©åããããšãæ³åããŠã¿ãŠãã ããã
- ã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ïŒ ã¢ãã€ã«ããã€ã¹ã¯ãªãœãŒã¹ãéãããŠãããããJavaScriptã³ãŒãã®æé©åã¯ããã«éèŠã«ãªããŸããäžèŠãªãªããžã§ã¯ãã®äœæãé¿ããåä»ãé åã䜿çšãããªã©ã®æè¡ã¯ãããããªãŒæ¶è²»ãåæžããããã©ãŒãã³ã¹ãåäžãããã®ã«åœ¹ç«ã¡ãŸããäŸãã°ããµãã©ä»¥åã®ã¢ããªã«ã§å€çšããããããã³ã°ã¢ããªã±ãŒã·ã§ã³ã¯ãäœéãªãããã¯ãŒã¯æ¥ç¶ãæã€äœã¹ããã¯ã®ããã€ã¹ã§ãããã©ãŒãã³ã¹ãé«ããªããã°ãªããŸããã
ããã«ãã°ããŒãã«ãªèŠèŽè åãã®ã¢ããªã±ãŒã·ã§ã³ãéçºããéã«ã¯ãåœéåïŒi18nïŒãšããŒã«ã©ã€ãºïŒl10nïŒã®ãã¹ããã©ã¯ãã£ã¹ãèæ ®ããããšãéèŠã§ãããããã¯V8ã®æé©åãšã¯å¥ã®æžå¿µäºé ã§ããã鿥çã«ããã©ãŒãã³ã¹ã«åœ±é¿ãäžããå¯èœæ§ããããŸããäŸãã°ãè€éãªæååæäœãæ¥ä»ãã©ãŒãããæäœã¯ãããã©ãŒãã³ã¹ã倧éã«æ¶è²»ããå¯èœæ§ããããŸãããããã£ãŠãæé©åãããi18nã©ã€ãã©ãªã䜿çšããäžèŠãªæäœãé¿ããããšã§ãã¢ããªã±ãŒã·ã§ã³å šäœã®ããã©ãŒãã³ã¹ãããã«åäžãããããšãã§ããŸãã
çµè«
V8ãããããã£ã¢ã¯ã»ã¹ãã¿ãŒã³ãã©ã®ããã«æé©åããããçè§£ããããšã¯ã髿§èœãªJavaScriptã³ãŒããæžãããã«äžå¯æ¬ ã§ãããã®èšäºã§æŠèª¬ãããã¹ããã©ã¯ãã£ã¹ãäŸãã°ã³ã³ã¹ãã©ã¯ã¿ã§ãªããžã§ã¯ãããããã£ãåæåãããåãé åºã§ããããã£ã远å ãããåçãªããããã£åé€ãé¿ãããªã©ãå®ãããšã§ãV8ãã³ãŒããæé©åããã¢ããªã±ãŒã·ã§ã³å šäœã®ããã©ãŒãã³ã¹ãåäžãããã®ãå©ããããšãã§ããŸããããã«ããã¯ãç¹å®ããããã«ã³ãŒãããããã¡ã€ã«ãããããã®æè¡ãæŠç¥çã«é©çšããããšãå¿ããªãã§ãã ãããããã©ãŒãã³ã¹ã®åäžã¯ãç¹ã«ããã©ãŒãã³ã¹ãéèŠãªã¢ããªã±ãŒã·ã§ã³ã«ãããŠé¡èã§ããå¹ççãªJavaScriptãæžãããšã§ãã°ããŒãã«ãªèŠèŽè ã«ããè¯ããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãæäŸã§ããŸãã
V8ãé²åãç¶ããã«ã€ããŠãææ°ã®æé©åæè¡ã«ã€ããŠåžžã«æ å ±ãåŸãããšãéèŠã§ããV8ã®ããã°ããã®ä»ã®ãªãœãŒã¹ã宿çã«åç §ããã¹ãã«ãææ°ã®ç¶æ ã«ä¿ã¡ãã³ãŒãããšã³ãžã³ã®èœåãæå€§éã«æŽ»çšã§ããããã«ããŠãã ããã
ãããã®ååãåãå ¥ããããšã§ãäžçäžã®éçºè ã¯ããã¹ãŠã®äººã«ãšã£ãŠããéããããå¹ççã§ãããå¿çæ§ã®é«ããŠã§ãäœéšã«è²¢ç®ããããšãã§ããŸãã